/**
 * @file: testMano.cpp 
 * @author: Andres M. Prudencio R
 * @date: JUN-12-2009
 * @desc: Unit test de la clase Mano hasta la r100
 */

#include "../Unit--/unit--.h"
#include "../../Mano.h"
#include "../../Carta.h"
#include "../../Constantes.h"

testSuite(testRonda);

testCase(calcularProbabilidadPreflop, testRonda){// Unit test que prueba el calculo de probabilidad para el preflop
    
    Mano pruebaMano;
    Carta C11(CORAZON,DIEZ);//carta 1 del jugador 1
    Carta C12(ESPADA,DOS);//carta 2 del jugador 1
    Carta C21(TREBOL,DIEZ);//carta 1 del jugador 1
    Carta C22(TREBOL,DOS);//carta 2 del jugador 1
    
    float pruebaProbabilidad = pruebaMano.calcularProbabilidadPreflop(C11.getValor(),C12.getPalo(),C21.getValor(),C22.getValor());
   
   assertTrue(pruebaProbabilidad != 0 );//probamos las funciones calcularProbabilidadPreflop y gets de carta
      
   //TEST comprobado con en el poker calculator http://texas.holdem.poker.probability.cal.culator.org/
    
    //probamos un caso obvio donde la probabilidad del caso uno debe ser mayor que la del caso 2, no se usaran los gets de carta debido al issue 5
    float pruebaProbabiliadAlta = pruebaMano.calcularProbabilidadPreflop(13,3,13,4); //caso 1 
    
    float pruebaProbabiliadBaja = pruebaMano.calcularProbabilidadPreflop(2,2,2,4); //caso 2 
    
    assertTrue(pruebaProbabiliadBaja < pruebaProbabiliadAlta);
    
    //que pasa cuando  en el caso 1 se tiene el  mismo palo y en el caso dos los mismos valores pero diferente palo
    pruebaProbabiliadAlta = pruebaMano.calcularProbabilidadPreflop(2,3,3,3);//caso 1 
    
    pruebaProbabiliadBaja = pruebaMano.calcularProbabilidadPreflop(2,1,3,4);//caso 2 
    
    assertTrue(pruebaProbabiliadBaja < pruebaProbabiliadAlta);
    
    //caso aleatorio
    pruebaProbabiliadAlta = pruebaMano.calcularProbabilidadPreflop(12,1,6,2);//caso 1 
    
    pruebaProbabiliadBaja = pruebaMano.calcularProbabilidadPreflop(11,3,8,2);//caso 2 
    
    assertTrue(pruebaProbabiliadBaja < pruebaProbabiliadAlta);
    
    
    
}

